Polymorphic storage devices

ABSTRACT

A storage device includes an application container containing one or more applications; a polymorphic storage device (PSD) kernel configured to receive a plurality of packets including data, messages, and commands from a host computer, and route the plurality of packets to an application in the application container based on a command included in the plurality of packets; and a PSD interface layer configured to provide an interface between the one or more applications and the PSD kernel. The storage device can be transformed from a first type of storage device to a second type of storage device according to the control command received via the PSD control interface.

CROSS-REFERENCE TO RELATED APPLICATION(S)

This application claims the benefits of and priority to U.S. ProvisionalPatent Application Ser. No. 62/290,295 filed Feb. 2, 2016, thedisclosure of which is incorporated herein by reference in its entirety.

TECHNICAL FIELD

The present disclosure relates generally to storage devices and, moreparticularly, to a polymorphic storage device that can transform intodifferent devices via a device control interface.

BACKGROUND

Compared to conventional data storage devices such as hard disk drives,solid-state drives (SSDs) provide more complexity and pseudo-generalprogrammability. For example, flash memory-based SSDs increasinglypackage more powerful CPUs and a higher-capacity memory and storage andmake those resources available to a user application. Moreover, for dataintensive applications, it is considered that moving codes to data isfar more efficient than moving data to codes. Thus, efficient dataprocessing systems try to push codes as far down into a query-processingpipeline as possible by using techniques such as early selectionpushdown and early aggregation (or pre-aggregation). Similarly, parallelor distributed data processing systems can run as much of the queriesclose to a node that holds the data.

Traditionally, code-offloading techniques have been implemented bytweaking an operating system (OS) of a host computer and a firmware ofan SSD in an ad-hoc manner. Although the boundaries among persistentstorage, volatile storage, and processing are increasingly gettingblurrier, the existing functional separation among the host OS,libraries, fixed protocols, and a storage device abstraction layercommonly introduces redundant implementations and can become abottleneck or a wasteful resource-consumer.

Non SQL (NoSQL) databases (DBs) (e.g., key-value stores, documentstores, graph, object databases, etc.) are widely used in moderncomputer systems. Compared to relational DBs, NoSQL DBs are simple,flexible and lightweight and can provide excellent scalability and largeperformance gains with certain workloads. The rapid move to cloudcomputing and large systems with big data contributes to the growingpopularity of NoSQL DBs.

FIG. 1 shows a traditional NoSQL database (DB) system. The NoSQL DBsystem 100 includes overlapped components and redundant mappings. TheNoSQL DB system 100 includes a host computer 110 and a storage device150 communicating over a host-to-SSD interface 190. The host computer110 includes a NoSQL DB 120 that has a mapping table for key to LBAtranslation 121, an operating system 130, and an SSD interface 140. Theexamples of the host-to-SSD interface 190 include, but are not limitedto, Peripheral Component Interconnect Express (PCIe), Serial AttachedSCSI (SAS), Ethernet, and Serial AT Attachment (SATA). The storagedevice 150 includes a memory controller 160 and a non-volatile memory170. The memory controller 160 includes a host interface 161, a LBA-PBAmapping table 162, an error-correcting code (ECC) memory 163, and aflash interface 164 for interfacing with the non-volatile memory 170.The host computer 110 and the storage device 150 communicate withcommands, LBAs, and data over the host-to-SSD interface 190.

There are two redundant mapping layers including a first mapping layerfor key-LBA mapping and a second mapping layer for LBA-PBA mapping.Traditionally, the host computer 110 and the storage device 150communicate with each other based on the LBAs to specify the address ofstorage locations in the storage device 150. For compatibility, thestorage device 150 works with LBAs, and a flash translation layer (FTL)of the memory controller 160 maintains the LBA-PBA translation. The FTLtranslates logical block addresses (LBAs) into physical block addresses(PBAs) using the mapping table 162, and accesses the physical blocks ofthe non-volatile memory 170 as indicated by the mapping table 162 toperform the requested operations (e.g., read, write, read/modify/write(RMW), and delete) on the physical blocks of the non-volatile memory170.

The key-LBA mapping in the host computer 110 can be eliminated if properarrangements are made between a host computer and a storage device. FIG.2 shows an example of a system architecture for another traditionalNoSQL DB system. The NoSQL DB system 200 can include a host computer 210and a storage device 250 communicating over a host-to-SSD interface 290.The host computer 210 can include a NoSQL user application programinterface (API) 220, an operation system 230, and an SSD interface 240.Similar to the host-to-SSD interface 190 of FIG. 1, the host-to-SSDinterface 290 can be any of PCIe, SAS, Ethernet, and SATA, or the like.The storage device 250 can include a memory controller 260 forinterfacing with a non-volatile memory 270. The memory controller 260can include a host interface 261, a NoSQL DB integrated FTL 262, anerror-correcting code (ECC) memory 263, and a flash interface 264. TheNoSQL DB integrated FTL 262 can eliminate the key-LBA mapping in thehost computer 210, therefore the NoSQL DB system 200 can have a betteraggregated performance compared to the NoSQL DB system 100 of FIG. 1that requires two redundant mapping layers.

The host computer 210 and the storage device 250 can communicate withquery commands, keys, and data over the host-to-SSD interface 290. Thenon-volatile memory 270 can be of various types of non-volatile memoryincluding, but not limited to, a flash memory, a phase-change RAM(PRAM), a spin-transfer torque magnetic random access memory (STT-MRAM),and a resistive RAM (ReRAM).

A firmware of the present polymorphic storage device defining behaviorsof the storage device can be reconfigured via a firmware update. Throughthe firmware update, the present polymorphic storage device can betransformed into a different type of devices from the originalconfiguration. For example, the present polymorphic storage isoriginally configured as a general-purpose storage device. By a firmwareupdate, it can be converted into a special-purpose device, such as anin-storage computing device, a key-value store device, a Hadoopdistributed file system (HDFS) device, an object-store device, etc.

FIG. 3 shows layers of a memory controller of an example storage device.The memory controller 360 has four layers, namely, a host interfacelayer (HIL) 310, a flash translation layer (FTL) 320, a virtual flashlayer (VFL) 330, and a flash interface layer (FIL) 340. These fourlayers can be implemented in the firmware of the storage device that canrun on one or more embedded processors of the storage device. The hostinterface layer 310 can implement a bus interface protocol such as SATA,SAS, or PCI Express (PCIe). The flash translation layer 320 isresponsible for mapping logical block addresses (LBAs) in the host OS tophysical block addresses (PBAs) in a non-volatile memory of the storagedevice. The virtual flash layer 330 and the flash interface layer 340are responsible for data transfer between the non-volatile memory and aDRAM memory of the storage device. The firmware of the storage devicecan provide other features including an ECC logic and a direct memoryaccess (DMA). To enhance the I/O performance of the non-volatile memory,the memory controller 360 can use interleaving techniques at achip-level and/or a channel-level.

SUMMARY

According to one embodiment, a storage device includes an applicationcontainer containing one or more applications; a polymorphic storagedevice (PSD) kernel configured to receive a plurality of packetsincluding data, messages, and commands from a host computer, and routethe plurality of packets to an application in the application containerbased on a command included in the plurality of packets; and a PSDinterface layer configured to provide an interface between the one ormore applications and the PSD kernel.

According to another embodiment, a storage system includes: a hostcomputer; a polymorphic storage device (PSD); and a PSD interface forproviding an interface between the host computer and the PSD. The PSDincludes: an application container containing one or more applications;a PSD kernel configured to receive a plurality of packets includingdata, messages, and commands from the host computer, and route theplurality of packets to an application in the application containerbased on a command included in the plurality of packets; and a PSDinterface layer configured to provide an interface between the one ormore applications and the PSD kernel.

According to yet another embodiment, a method includes storing one ormore applications in an application container of a storage device;receiving a plurality of packets including data, messages, and commandsfrom a host computer; routing the plurality of packets to an applicationin the application container based on a command included in theplurality of packets; running a PSD kernel on the storage device toconfigure one or more hardware of the storage device according to acontrol command received from the host computer via a PSD interface; andoperating the storage device as configured by the PSD kernel.

The above and other preferred features, including various novel detailsof implementation and combination of events, will now be moreparticularly described with reference to the accompanying figures andpointed out in the claims. It will be understood that the particularsystems and methods described herein are shown by way of illustrationonly and not as limitations. As will be understood by those skilled inthe art, the principles and features described herein may be employed invarious and numerous embodiments without departing from the scope of thepresent disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are included as part of the presentspecification, illustrate the presently preferred embodiment andtogether with the general description given above and the detaileddescription of the preferred embodiment given below serve to explain andteach the principles described herein.

FIG. 1 shows a traditional NoSQL database (DB) system;

FIG. 2 shows an example of a system architecture for another traditionalNoSQL DB system;

FIG. 3 shows layers of a memory controller of an example storage device;

FIG. 4 shows a block diagram of an example storage system including apolymorphic storage device, according to one embodiment;

FIG. 5 shows a firmware stack of an example polymorphic storage device,according to one embodiment;

FIG. 6A shows an example of migrating and duplication applications in acentralized manner, according to one embodiment; and

FIG. 6B shows another example of migrating and duplication applicationsin a decentralized manner, according to one embodiment.

The figures are not necessarily drawn to scale and elements of similarstructures or functions are generally represented by like referencenumerals for illustrative purposes throughout the figures. The figuresare only intended to facilitate the description of the variousembodiments described herein. The figures do not describe every aspectof the teachings disclosed herein and do not limit the scope of theclaims.

DETAILED DESCRIPTION

Each of the features and teachings disclosed herein can be utilizedseparately or in conjunction with other features and teachings toprovide a polymorphic storage device that can transform into differentdevices via a device control interface. Representative examplesutilizing many of these additional features and teachings, bothseparately and in combination, are described in further detail withreference to the attached figures. This detailed description is merelyintended to teach a person of skill in the art further details forpracticing aspects of the present teachings and is not intended to limitthe scope of the claims. Therefore, combinations of features disclosedabove in the detailed description may not be necessary to practice theteachings in the broadest sense, and are instead taught merely todescribe particularly representative examples of the present teachings.

In the description below, for purposes of explanation only, specificnomenclature is set forth to provide a thorough understanding of thepresent disclosure. However, it will be apparent to one skilled in theart that these specific details are not required to practice theteachings of the present disclosure.

Some portions of the detailed descriptions herein are presented in termsof algorithms and symbolic representations of operations on data bitswithin a computer memory. These algorithmic descriptions andrepresentations are used by those skilled in the data processing arts toeffectively convey the substance of their work to others skilled in theart. An algorithm is here, and generally, conceived to be aself-consistent sequence of steps leading to a desired result. The stepsare those requiring physical manipulations of physical quantities.Usually, though not necessarily, these quantities take the form ofelectrical or magnetic signals capable of being stored, transferred,combined, compared, and otherwise manipulated. It has proven convenientat times, principally for reasons of common usage, to refer to thesesignals as bits, values, elements, symbols, characters, terms, numbers,or the like.

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise as apparent from the below discussion, itis appreciated that throughout the description, discussions utilizingterms such as “processing,” “computing,” “calculating,” “determining,”“displaying,” or the like, refer to the action and processes of acomputer system, or similar electronic computing device, thatmanipulates and transforms data represented as physical (electronic)quantities within the computer system's registers and memories intoother data similarly represented as physical quantities within thecomputer system memories or registers or other such information storage,transmission or display devices.

The algorithms presented herein are not inherently related to anyparticular computer or other apparatus. Various general-purpose systems,computer servers, or personal computers may be used with programs inaccordance with the teachings herein, or it may prove convenient toconstruct a more specialized apparatus to perform the required methodsteps. The required structure for a variety of these systems will appearfrom the description below. It will be appreciated that a variety ofprogramming languages may be used to implement the teachings of thedisclosure as described herein.

Moreover, the various features of the representative examples and thedependent claims may be combined in ways that are not specifically andexplicitly enumerated in order to provide additional useful embodimentsof the present teachings. It is also expressly noted that all valueranges or indications of groups of entities disclose every possibleintermediate value or intermediate entity for the purpose of an originaldisclosure, as well as for the purpose of restricting the claimedsubject matter. It is also expressly noted that the dimensions and theshapes of the components shown in the figures are designed to help tounderstand how the present teachings are practiced, but not intended tolimit the dimensions and the shapes shown in the examples.

The present disclosure provides a polymorphic storage device that istransformable from one device type to another device type via a devicecontrol interface. FIG. 4 shows a block diagram of an example storagesystem including a polymorphic storage device, according to oneembodiment. The storage system 400 includes a host computer 410 and apolymorphic storage device (PSD) 450 that can communicate via a PSDinterface 490. The host computer 410 can include a device driver pool413 for storing a plurality of device drivers 411 a-411 c that can beused to reconfigure the PSD 450. The PSD 450 can include a PSD kernel455, a PSD interface layer (PIL) 452 for interfacing with an application451, a reconfigurable and extendable hardware including the plurality ofCPUs 461 a-461 d, non-volatile memory 470, and DRAM 480. The PSD 450 canfurther include a hardware abstraction layer 456 for providing a devicedriver interface allowing the application 451 to communicate with thereconfigurable and extendable hardware. Although the present exampleshows that the PSD 450 includes the reconfigurable and extendablehardware, it is understood that the PSD 450 can includenon-reconfigurable and non-extendable hardware without deviating fromthe scope of the present disclosure. The reconfigurable and extendablehardware can provide flexibility and programmability of the PSD 450.

According to one embodiment, a host-side interface 415 can include afirst user interface 420, a second user interface 421, and a PSD controlinterface 422 for the PSD 450. The first user interface 420 may provide,for example, an interface to a file system (FS) and/or a database (DB),or the like. Via the first user interface 420, input/output (I/O)control commands (e.g., device control commands and metadata) requiredfor the file system and the database can be sent to and from the hostcomputer 410. The second user interface 421 may provide, for example, aninterface to a key-value and/or an object store, and provides queries431 (e.g., put, get) for the key-value and/or the object store. The PSDcontrol interface 422 can provide commands and messages 432 to the hostcomputer 410 and to the PSD 450 via the PSD interface 490. Using one ofthe plurality of device drivers 411 a-411 c in the device driver pool413 of the host computer 410, the PSD 450 can be configured (orreconfigured) according to the commands received from the PSD controlinterface 422. Those commands via the PSD control interface 422 cancontrol the applications 451 a-451 d running on the PSD 450. Herein, theapplications 451 a-451 d running on the PSD 450 are also referred to asPSD-aware applications because they can configure the PSD using acommand received via the PSD control interface 433 and transform the PSD450 from a first type of storage device to a second type of storagedevice. The PSD control interface 422 can also provide control thedevice drivers stored in the host-side device driver pool 413 and theirdevice driver managers.

According to one embodiment, the PSD interface 490 can emulate thehost-side user interfaces 420 and 421 for backward compatibility or thePSD control interface 422 for managing and controlling PSD-awareapplications 451 a-451 d running on the PSD 450. Vendor-specificcommands can be provided to the PSD-aware applications 451 a-451 d viathe PSD interface 490. Examples of such vendor-specific commandsinclude, but are not limited to, “create”, “start/stop”, “pause/resume”,etc. The PSD 450 can communicate with the host computer 410 and add,remove, and change functionalities or applications without a firmwareupdate.

According to one embodiment, the PSD interface 490 between the hostcomputer 410 and the PSD 450 can provide offloaded or integratedfunctionalities inside the PSD 450. For example, PSD-aware applications451 or host-side applications can interact with a user interface of thePSD 450 rather than the storage system interface that is commonlyprovided by the host OS and the device drivers 411 a-411 c of the hostcomputer 410. Traditionally, a host-side application running on the hostcomputer 410 implements its functionality on the host computer 410 withan application logic. According to one embodiment, an application logicfor a host-side application running on the host computer 410 can bedistributed to the PSD 450. For example, an integrated key-value FTL ofthe PSD 450 can remove virtually all logics at the host sideapplication, and only user APIs for key-value NoSQL operations areprovided to the PSD kernel 455 of the PSD 450. The rest of theoperations can be handled inside the PSD 450, and a PSD-awareapplication 451 can run the key-value NoSQL operations using commandsand messages that are received via the PSD interface 490.

Since the PSD 450 can handle more than one application (e.g., 451 a-451d) at a time, the corresponding host-side device driver 411 may bepresent in the device driver pool 413. If the PSD 450 has only oneactive instance of a device driver, the device driver pool 413 is onlyworking with one device driver 411 in a manner that is similar to atraditional storage system. As shown in FIG. 4, the PSD 450 can utilizethe PSD control interface 422 that controls instances of applications451 inside the PSD 450. In this sense, the provisioning of the PSDcontrol interface 422 is similar to a virtual machine (VM) manager or ahypervisor in that the PSD control interface 422 provides a controlmechanism of applications 451 rather than directly interacting with theapplications 451.

Multiple applications 451 can be running simultaneously on the PSD 450.However, the number of physical communication channels between the hostcomputer 410 and the PSD 450 is limited to the number of physicaldevices. For this reason, the communication between each application 451and an application container inside the PSD 450 can be multiplexed andde-multiplexed inside the PSD 450. The PSD interface 490 can be anyphysical interface including, but not limited to, SATA, SAS, NVMe,Ethernet, Fiber Channel (FC), Infiniband (IB), Remote Direct MemoryAccess (RDMA), etc. The host-side device driver pool 413 can also takecare of multiplexing to embed/encapsulate all messages/commands/datainto an existing communication protocol for providing a physicalinterface. In some embodiments, the PSD's own protocol can be used toreduce an overhead of overloading data onto an existing protocol.

FIG. 5 shows a firmware stack of an example polymorphic storage device,according to one embodiment. The PSD firmware stack 500 includes a flashcontroller layer 535, a PSD kernel 555, a PSD interface layer 552, andan application container 510. The application container 510 can includeone or more applications 511 a, 511 b, and 511 c. In the presentexample, the application 511 c refers to a current tenant that isrunning on the PSD to differentiate itself from other applications 511 aand 511 b. Hereinafter, the applications 511 a, 511 b, and 511 c may becollectively referred to as application 511. The application 511 caninclude a host protocol and message processor 513, anapplication-specific address translation logic (ATL) 514, anapplication-specific wear leveling logic 515, and anapplication-specific garbage collection logic 516.

For example, the application 511 can be one of a key-value cachingapplication, an HDFS application, and a MongoDB application. For thekey-value caching application, the ATL 514 can be an index-integratedFTL and the GC 516 can be more efficient by utilizing a least-recentlyused (LRU) list. For the HDFS application, the ATL 514 can be configuredto be smaller from its memory-footprint perspective (e.g., 64 MB for itsgranularity). Therefore, its application-specific ATL 514 is necessary.Moreover, for some HDFS applications, the GC 516 and the WL 515 can beminimized (or optimized) if they contain mostly, if not all, cold data(i.e., the data that is never updated once created). For the MongoDBapplication, some of the host operations can be offloaded to the ATL 514and the GC 516. Each application 511 can have different ATL 514, GC 516,and WL 515 to be suited for the characteristics and requirements of theapplication 511.

The flash controller layer 535 includes a virtual flash layer (VFL) 530and a flash interface layer (FIL) 540. The flash controller layer 535can provide a hardware support to provide increased efficiency for thePSD. Depending on the application 511 running on the PSD, the flashcontroller layer 535 can optimize the use of the reconfigurable andextendable hardware to provide an efficient interface to the flashmemory. The flash controller layer 535 may be updated by a firmwareupdate to support features of the applications 511.

Packets (e.g., data, messages, and commands) received from a hostcomputer are first sent to the PSD kernel 555. The context (CTX) manager556 and the message router 557 of the PSD kernel 555 are responsible forrouting packets received from the host computer. The CTX manager 556 isaware of current tenant application(s) on the PSD along with itscharacteristics. The CTX manager 556 can include a table of applicationIDs for tracking both currently running and other existing applicationsand the configurations of the associated ATL 514, WL 515, and GC 516.The CTX manager 556 is also responsible for controlling the executionand liveness (i.e., context control) of the current tenantapplication(s) such as start/stop, resume, and suspend, etc. The PSDkernel 555 can de-encapsulate the routed packets and process the routedpackets accordingly. For example, if a command to “create” anapplication 511 is received, the CTX manager 556 can create anapplication context for the application 511 with the host-provided data.The host-provided data may include configuration profiles or logics forthe ATL 514, the WL 515, the GCC 516, as well as a binary code of theapplication 511 that is executable on the PSD as well as meta-dataincluding a PSD library to allow the application 511 to communicate withthe PSD kernel 555.

If a message received from the host computer relates to a registeredapplication 511 on the PSD, the PSD kernel 555 can route the message andthe corresponding data and/or commands to the registered application 511if the context of the registered application 511 is active. If thecontext of the registered application 511 is not active, the PSD kernel555 returns an error message to the host computer. The PSD kernel 555can send other error messages to the host computer if unregistered orunrecognized messages are received from the host computer.

The CTX manager 556 is responsible for controlling the applicationcontainer 510. The CTX manager 556 can create an application context forapplications 511, and distribute and manage the hardware resources ofthe PSD to the ATL 514, the WL 515, and the GC 516. The CTX manager 556can be implemented in a fully virtualized manner, similar to a virtualmachine (VM), or in a para-virtualized manner. In one embodiment, theapplication 511 can run as a normal firmware on a generic storage devicewithout implementing the PSD kernel 555. In another embodiment, theapplication 511 can run as a new application specifically designed forthe PSD with awareness of features provided by the PSD.

Some of applications 511 may need application-specific wear leveling(WL) and/or garbage collection (GC) logics. These logics can be criticalfor the performance of the PSD. The PSD kernel 555 provides PSDlibraries 558 including application-specific WL/GC interfaces andgeneric APIs to interface with the PSD kernel 555. In the latter case,the application 511 can register those libraries provided instead ofimplementing their own WL/GC logics 515 and 516. In the former case, thePSD kernel 555 does not do anything related to WL/GC by providing fullprivileges to the application 511 in the layer(s) of the PSD firmwarestack 500.

The applications 511 can communicate with the underlying PSD kernel 555via the PSD interface layer 552. The PSD interface layer 552 can providecommunication APIs and packets (e.g., messages, commands, and data) thatpass through the PSD interface layer 552 to the PSD.

The application 511 can co-exist on a single PSD in the form ofapplication context(s). The application container 510 can holdapplication contexts for the applications 511 that may be active oridle. The application 511 can include application logics, a hostprotocol and message processor layer 513, an application-specificaddress translation logic (ATL) 514, a wear leveling (WL) logic 515, agarbage collection (GC) logic 516, etc. In some embodiments, the WL andGC logics 514 and 515 are optional. For example, a key-value storeapplication can have their key-value structure and algorithm for thecore logics. The host protocol and message processor layer 513 can be assimple as a wrapper of functions of core logics. In the case ofkey-value store application, the application-specific ATL 514 can bemerged into an integrated FTL (e.g., NoSQL DB integrated FTL 262 of FIG.2).

Although no additional logics are mandatorily required from a hardwareperspective on a modern SSD, the following factors can accelerateexecutions of a PSD. Examples of factors that can accelerate executionsof a PSD include, but are not limited to, multiple translation lookasidebuffers (TLBs) or a larger TLB, caches with an application container ID,a memory with more banks to reduce conflicts and/or more registers perdual inline memory modules (DIMMs), more flexible support for directmemory access (DMA), and a higher number of outstanding DMAs, a supportfor virtualization from embedded processors, an applicationcontext-aware flash controller, a fine-grain power control withawareness of polymorphism, a hardware-assisted message routing, etc. Inanother example, the PSD can include a field-programmable gate array(FPGA) to provide an accelerated application-specific functionality.Applications such as a machine-learning kernel, scientific computing inbig data processing such as neural network, matrix manipulation, a fastFourier transform (FFT), pattern matching, etc. can be accelerated withthe FPGA rather than running codes on the CPUs of a general-purposedevice.

According to one embodiment, the storage system 400 can provide multipleinstances (applications) per a single PSD 450 or multiple PSDs. Inaddition, the storage system 400 can support migration and replicationamong multiple polymorphic storage devices 450.

FIGS. 6A and 6B show examples of migrating and duplicating applicationsamong multiple PSDs. Multiple polymorphic storage devices 650 a-650 ccan support application migration and duplication in either acentralized manner or a decentralized manner.

FIG. 6A shows an example of migrating and duplication applications in acentralized manner, according to one embodiment. The PSD controlinterface 622 can provide commands and messages 432 to perform migrationand duplication among the multiple PSDs 650 a-650 c. In the centralizedimplementation, the migration and duplication operations can beimplemented by the CTX managers (e.g., CTX manager 556 of FIG. 5) of thePSDs 650 a-650 c and the PSD control interface 653. The PSD controlinterface 653 can spawn an interface 653 for executing the centralizedmigration and duplication operations.

FIG. 6B shows another example of migrating and duplication applicationsin a decentralized manner, according to one embodiment. In thedecentralized implementation, each polymorphic device is capable ofoperating application migration/duplication based on peer-to-peercommunication between neighbor devices.

According to one embodiment, a storage device includes an applicationcontainer containing one or more applications; a polymorphic storagedevice (PSD) kernel configured to receive a plurality of packetsincluding data, messages, and commands from a host computer, and routethe plurality of packets to an application in the application containerbased on a command included in the plurality of packets; and a PSDinterface layer configured to provide an interface between the one ormore applications and the PSD kernel.

The storage device may further include one or more hardware that isreconfigurable according to a control command received from the hostcomputer. The reconfigurable hardware may include one or moreprocessors, a non-volatile memory, and a DRAM.

A host-side interface including a PSD control interface and applicationinterfaces may be provided to the host computer.

The storage device may be transformed from a first type of storagedevice to a second type of storage device according to the controlcommand received via the PSD control interface.

The first type of storage device may be one device of an in-storagecomputing device, a key-value store device, and a HDFS device, anobject-store device, and the second type of storage device may beanother device of the in-storage computing device, the key-value storedevice, and the HDFS device.

The PSD control interface may be configured to provide control commandsand messages to the storage device.

The application interfaces may include an emulated hos-side interfaceconfigured to provide an emulated host-side interface for backwardcompatibility and a PSD-aware application interface.

The one or more vendor commands may be provided via the PSD controlinterface.

The one or more vendor commands may include a create command, a startcommand, a stop command, a pause command, and a resume command.

The one or more vendor commands may include a migration command or aduplication command for migrating or duplicating an application runningon the storage device to another storage device via the PSD controlinterface.

The application may be migrated or duplicated in a centralized manner ora decentralized manner.

According to another embodiment, a storage system includes: a hostcomputer; a polymorphic storage device (PSD); and a PSD interface forproviding an interface between the host computer and the PSD. The PSDincludes: an application container containing one or more applications;a PSD kernel configured to receive a plurality of packets includingdata, messages, and commands from the host computer, and route theplurality of packets to an application in the application containerbased on a command included in the plurality of packets; and a PSDinterface layer configured to provide an interface between the one ormore applications and the PSD kernel.

The storage system may further include one or more hardware that isreconfigurable according to a control command received from the hostcomputer. The reconfigurable hardware of the PSD may include one or moreprocessors, a non-volatile memory, and a DRAM.

A host-side interface including a PSD control interface and applicationinterfaces may be provided to the host computer.

The storage device may be transformed from a first type of storagedevice to a second type of storage device according to the controlcommand received via the PSD control interface.

The PSD control interface may be configured to provide control commandsand messages to the PSD.

According to yet another embodiment, a method includes storing one ormore applications in an application container of a storage device;receiving a plurality of packets including data, messages, and commandsfrom a host computer; routing the plurality of packets to an applicationin the application container based on a command included in theplurality of packets; running a PSD kernel on the storage device toconfigure one or more hardware of the storage device according to acontrol command received from the host computer via a PSD interface; andoperating the storage device as configured by the PSD kernel.

The method may further include reconfiguring the one or more hardwareaccording to another command received from the host computer via the PSDinterface. The one or more reconfigurable hardware may include one ormore processors, a non-volatile memory, and a DRAM.

The method may further include providing a host-side interface to thehost computer. The host-side interface may include a PSD controlinterface and application interfaces.

The method may further include transforming the PSD from a first type ofstorage device to a second type of storage device according to thecontrol command received via the PSD control interface.

The above example embodiments have been described hereinabove toillustrate various embodiments of implementing a polymorphic storagedevice that can transform into different devices via a device controlinterface. Various modifications and departures from the disclosedexample embodiments will occur to those having ordinary skill in theart. The subject matter that is intended to be within the scope of theinvention is set forth in the following claims.

What is claimed is:
 1. A storage device comprising: an applicationcontainer containing one or more applications; a polymorphic storagedevice (PSD) kernel configured to receive a plurality of packetsincluding data, messages, and commands from a host computer, and routethe plurality of packets to an application in the application containerbased on a command included in the plurality of packets; and a PSDinterface layer configured to provide an interface between the one ormore applications and the PSD kernel.
 2. The storage device of claim 1,further comprising one or more hardware that is reconfigurable accordingto a control command received from the host computer, wherein thereconfigurable hardware includes one or more processors, a non-volatilememory, and a dynamic random access memory (DRAM).
 3. The storage deviceof claim 1, wherein a host-side interface comprising a PSD controlinterface and application interfaces is provided to the host computer.4. The storage device of claim 3, wherein the storage device istransformed from a first type of storage device to a second type ofstorage device according to the control command received via the PSDcontrol interface.
 5. The storage device of claim 1, wherein the firsttype of storage device is one device of an in-storage computing device,a key-value store device, and a Hadoop distributed file system (HDFS)device, an object-store device, and wherein the second type of storagedevice is another device of the in-storage computing device, thekey-value store device, and the HDFS device.
 6. The storage device ofclaim 3, wherein the PSD control interface is configured to providecontrol commands and messages to the storage device.
 7. The storagedevice of claim 3, wherein the application interfaces comprises anemulated host-side interface configured to provide an emulated host-sideinterface for backward compatibility and a PSD-aware applicationinterface.
 8. The storage device of claim 3, wherein one or more vendorcommands are provided via the PSD control interface.
 9. The storagedevice of claim 8, wherein the one or more vendor commands include acreate command, a start command, a stop command, a pause command, and aresume command.
 10. The storage device of claim 8, wherein the one ormore vendor commands include a migration command or a duplicationcommand for migrating or duplicating an application running on thestorage device to another storage device via the PSD control interface.11. The storage device of claim 10, wherein the application is migratedor duplicated in a centralized manner or a decentralized manner.
 12. Astorage system comprising: a host computer; a polymorphic storage device(PSD); and a PSD interface for providing an interface between the hostcomputer and the PSD, wherein the PSD comprises: an applicationcontainer containing one or more applications; a PSD kernel configuredto receive a plurality of packets including data, messages, and commandsfrom the host computer, and route the plurality of packets to anapplication in the application container based on a command included inthe plurality of packets; and a PSD interface layer configured toprovide an interface between the one or more applications and the PSDkernel.
 13. The storage system of claim 12, further comprising one ormore hardware that is reconfigurable according to a control commandreceived from the host computer, wherein the reconfigurable hardware ofthe PSD includes one or more processors, a non-volatile memory, and aDRAM.
 14. The storage system of claim 12, wherein a host-side interfacecomprising a PSD control interface and application interfaces isprovided to the host computer.
 15. The storage device of claim 14,wherein the storage device is transformed from a first type of storagedevice to a second type of storage device according to the controlcommand received via the PSD control interface.
 16. The storage deviceof claim 14, wherein the PSD control interface is configured to providecontrol commands and messages to the PSD.
 17. A method comprising:storing one or more applications in an application container of astorage device; receiving a plurality of packets including data,messages, and commands from a host computer; and routing the pluralityof packets to an application in the application container based on acommand included in the plurality of packets; running a PSD kernel onthe storage device to configure one or more hardware of the storagedevice according to a control command received from the host computervia a PSD interface; and operating the storage device as configured bythe PSD kernel.
 18. The method of claim 17, further comprisingreconfiguring the one or more hardware according to another commandreceived from the host computer via the PSD interface, where the one ormore reconfigurable hardware includes one or more processors, anon-volatile memory, and a dynamic random access memory (DRAM).
 19. Themethod of claim 17, further comprising providing a host-side interfaceto the host computer, wherein the host-side interface comprises a PSDcontrol interface and application interfaces.
 20. The method of claim19, further comprising transforming the PSD from a first type of storagedevice to a second type of storage device according to the controlcommand received via the PSD control interface.